home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
util
/
cli
/
CLI_Tools.lha
/
Exists.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-02-03
|
3KB
|
122 lines
/******************************************************************************
MODULE
Exists.c
DESCRIPTION
Get one filename on Commandline
and write to StdOut if it exists
NOTES
Kickstart 2.0+ required
compiles w/ Dice 2.07R - inline-pragmas required
compiles w/ SAS/C v6.51
BUGS
We use 'Lock', so Exists fails, if the
file exists and is exclusively locked
TODO
Use another way than 'Lock' to determine
the existance
EXAMPLES
> Exists Sys:System/CLI
1
SEE ALSO
INDEX
HISTORY
03-02-95 b_noll created
AUTHOR
Bernd Noll, Brunnenstrasse 55, D-67661 Kaiserslautern
b_noll@informatik.uni-kl.de
******************************************************************************/
/**************************************
Includes
**************************************/
#ifndef EXEC_LIBRARIES_H
# include <exec/libraries.h>
#endif /* EXEC_LIBRARIES_H */
#ifndef CLIB_EXEC_PROTOS_H
# include <clib/exec_protos.h>
#endif /* CLIB_EXEC_PROTOS_H */
#ifndef DOS_DOS_H
# include <dos/dos.h>
#endif /* DOS_DOS_H */
#ifndef CLIB_DOS_PROTOS_H
# include <clib/dos_protos.h>
#endif /* CLIB_DOS_PROTOS_H */
#include <proto/dos.h>
#include <proto/exec.h>
/**************************************
Global Variables
**************************************/
/**************************************
Implementation
**************************************/
long _main (void)
{
const char* version = "$VER: Exists 1.0 (03.02.95)";
long retval = 20;
struct Library* SysBase = *((struct Library**)4L);
struct Library* DOSBase;
if (DOSBase = OpenLibrary (DOSNAME, 37)) {
STRPTR argv[] = { NULL, NULL, NULL };
APTR args;
retval = 10;
if (args = (void*)ReadArgs("FILE/A,NAME/S", (LONG*)argv, NULL)) {
APTR pw;
struct Process *p;
BPTR lock;
if ((p = (struct Process *)FindTask(NULL))) {
pw = p->pr_WindowPtr;
p->pr_WindowPtr = (APTR)-1;
} /* if */
/* ---- Existance check: rv==0->Exists, rv==5->n/e */
retval = 5;
if ((lock = Lock(argv[0], ACCESS_READ))) {
retval = 0;
UnLock (lock);
} /* if */
/* ----- Result output, either boolean(0/1) or named (name/"") */
PutStr( retval?
(STRPTR)( argv[1]? "": "0" ):
( argv[1]? argv[0]: (STRPTR)"1" ) );
PutStr ("\n");
if (p != NULL) {
p->pr_WindowPtr = pw;
} /* if */
FreeArgs (args);
} /* if */
CloseLibrary (DOSBase);
} /* if */
return (retval);
} /* _main */
/******************************************************************************
***** END Exists.c
******************************************************************************/